page.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. 'use client';
  2. import { use } from 'react';
  3. import { useDonationHub } from '@/hooks/useDonationHub';
  4. import './style.scss';
  5. type Props = {
  6. params: Promise<{ widgetToken: string }>;
  7. };
  8. export default function RankPage({ params }: Props) {
  9. const { widgetToken } = use(params);
  10. const hubUrl = process.env.NEXT_PUBLIC_API_URL + '/hubs/donation';
  11. const { ranking } = useDonationHub(widgetToken, hubUrl);
  12. return (
  13. <div className="rank-widget">
  14. <div className="rank-title">후원 순위</div>
  15. <div className="rank-list">
  16. {ranking.length === 0 && (
  17. <div className="rank-empty">순위 데이터 대기 중...</div>
  18. )}
  19. {ranking.map(item => {
  20. const badgeClass = item.rank <= 3 ? `badge-${item.rank}` : 'badge-default';
  21. return (
  22. <div key={item.sponsorMemberID} className={`rank-item rank-${item.rank}`}>
  23. <div className={`rank-badge ${badgeClass}`}>{item.rank}</div>
  24. <div className="rank-name">{item.sponsorName}</div>
  25. <div className="rank-amount">{item.totalAmount.toLocaleString()}원</div>
  26. </div>
  27. );
  28. })}
  29. </div>
  30. </div>
  31. );
  32. }